<?php

	require_once('../utils.php');
	require_once('../ORMCheque.php');
	require_once('../Excel.php');

	session_start();

	switch ($_REQUEST['op'])
	{
		// -------------------------------------------------------
		case 'marcar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.'); ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'valor' => array(
					'obligatorio' => array(true),
					'numerico' => array('Se esperaba un valor numérico'),
					'pattern' => array('[01]', 'Puede ser solo cero (0) o uno (1).')
				),

				'numero_cheque' => array(
					'obligatorio' => array(true, 'Se requiere el numero de cheque.')
				)
			));

			ORMCheque::marcarCheque($in['numero_cheque'], $in['valor']);
			break;

		// -------------------------------------------------------
		case 'contar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'tipo_cheque' => array(
					'obligatorio' => array(false)
				),

				'numero_cheque' => array(
					'obligatorio' => array(false)
				),

				'entregado' => array(
					'obligatorio' => array(false),
					'pattern' => array('[01]', 'Puede ser solo cero (0) o uno (1).')
				),

				'vendedor' => array(
					'obligatorio' => array(false),
					'pattern' => array('[A-Za-z0-9 ]+', 'Solo letras y numeros.')
				),

				'beneficiario' => array(
					'obligatorio' => array(false),
					'pattern' => array('[A-Za-z0-9 ]+', 'Solo letras y numeros.')
				)
			));

			resp('total', ORMCheque::contarCheques($in['tipo_cheque'], $in['numero_cheque'], $in['entregado'], $in['vendedor'], $in['beneficiario']));
			break;

		// -------------------------------------------------------
		case 'listar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'offset' => array(
					'obligatorio' => array(true, 'Se requiere el offset a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'count' => array(
					'obligatorio' => array(true, 'Se requiere el numero de elementos a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'tipo_cheque' => array(
					'obligatorio' => array(false)
				),

				'numero_cheque' => array(
					'obligatorio' => array(false, 'Se requiere el numero de elementos a mostrar.')
				),

				'entregado' => array(
					'obligatorio' => array(false),
					'pattern' => array('[01]', 'Puede ser solo cero (0) o uno (1).')
				),

				'vendedor' => array(
					'obligatorio' => array(false),
					'pattern' => array('[A-Za-z0-9 ]+', 'Solo letras y numeros.')
				),

				'beneficiario' => array(
					'obligatorio' => array(false),
					'pattern' => array('[A-Za-z0-9 ]+', 'Solo letras y numeros.')
				)
			));

			resp('datos', ORMCheque::getCheques($in['offset'], $in['count'], $in['tipo_cheque'], $in['numero_cheque'], $in['entregado'], $in['vendedor'], $in['beneficiario']));
			break;

		// -------------------------------------------------------
		case 'exportar':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			$in = validar ($_REQUEST, array
			(
				'offset' => array(
					'obligatorio' => array(true, 'Se requiere el offset a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'count' => array(
					'obligatorio' => array(true, 'Se requiere el numero de elementos a mostrar.'),
					'numerico' => array('Se esperaba un valor numérico')
				),

				'tipo_cheque' => array(
					'obligatorio' => array(false)
				),

				'numero_cheque' => array(
					'obligatorio' => array(false, 'Se requiere el numero de elementos a mostrar.')
				),

				'entregado' => array(
					'obligatorio' => array(false),
					'pattern' => array('[01]', 'Puede ser solo cero (0) o uno (1).')
				),

				'vendedor' => array(
					'obligatorio' => array(false),
					'pattern' => array('[A-Za-z0-9 ]+', 'Solo letras y numeros.')
				),

				'beneficiario' => array(
					'obligatorio' => array(false),
					'pattern' => array('[A-Za-z0-9 ]+', 'Solo letras y numeros.')
				),

				'full' => array(
					'obligatorio' => array(true, 'Falta parámetro full.'),
					'numerico' => array('Se esperaba un valor numérico')
				)
			));

			if ($in['full'])
			{
				$in['offset'] = 0;
				$in['count'] = $CONFIG['max_export'];
			}

			$data = ORMCheque::getCheques($in['offset'], $in['count'], $in['tipo_cheque'], $in['numero_cheque'], $in['entregado'], $in['vendedor'], $in['beneficiario']);

			$fields = array('no_vendedor', 'numero_cheque', 'beneficiario', 'tipo_cheque', 'cantidad', 'fecha_creacion_cheque', 'cuenta_banco');
			$header = array('No. Vendedor', 'Numero de Cheque', 'Beneficiario', 'Tipo de Cheque', 'Cantidad', 'Fecha de Creacion', 'Cuenta de Banco');
			$output = array();

			for ($i = 0; $i < sizeof($data); $i++)
			{
				$row = array();

				for ($j = 0; $j < sizeof($fields); $j++)
				{
					$row[] = $data[$i][$fields[$j]];
				}

				$output[] = $row;
			}

			Excel::Exportar('Reporte de Cheques', $header, $output);
			exit;

			break;


		// -------------------------------------------------------
		case 'tipos':
			if (!$_SESSION['autenticado']) reterr (E_ERROR_PROC, 'Se requiere autenticación previa.');
			// if ($_SESSION['u']['tipo'] != 1) reterr (E_ERROR_PROC, 'Acceso denegado: Debe ser usuario administrativo.');

			resp('datos', ORMCheque::getTipos());
			break;

		// -------------------------------------------------------
		default:
			if (!$_REQUEST['op'])
				reterr (E_ERROR_PROC, 'Falta código de operación (op).');	
			else
				reterr (E_ERROR_PROC, 'Código de operación no reconocido: ' . $_REQUEST['op']);	

			break;
	}

	ret(E_OK);
